# -*- coding: UTF-8 -*-
'''
@File ：log.py
@IDE ：PyCharm
@Author ：chaojie
@Date ：2025/7/4 
@Introduce:
'''

import time
import logging
import os
def setup_logger(log_path):
    """
    设置日志记录器。

    此函数配置并返回一个日志记录器对象，用于记录应用程序的日志信息。
    它设置了日志信息级别，以及日志信息的输出格式，并配置了控制台和文件两个日志处理器。
    """
    # 创建一个名为'logger'的日志记录器
    logger = logging.getLogger('logger')
    # 设置日志记录器的信息级别为DEBUG，表示可以记录DEBUG级别及以上的日志信息
    logger.setLevel(logging.DEBUG)

    # 检查日志记录器是否已经有处理器，如果没有，则添加控制台和文件处理器
    if not logger.handlers:
        # 创建一个控制台处理器，用于输出日志信息到控制台
        console_handler = logging.StreamHandler()
        # 设置控制台处理器的日志信息级别为INFO
        console_handler.setLevel(logging.INFO)

        # 创建一个文件处理器，用于将日志信息写入到'app.log'文件中，使用UTF-8编码
        file_handler = logging.FileHandler(f'{log_path}/log.log', encoding='utf-8')
        # 设置文件处理器的日志信息级别为DEBUG
        file_handler.setLevel(logging.DEBUG)

        # 创建一个日志信息格式器，指定日志信息的输出格式
        formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
        # 为控制台处理器设置格式器，使其输出的日志信息遵循指定的格式
        console_handler.setFormatter(formatter)
        # 为文件处理器设置格式器，使其输出的日志信息遵循指定的格式
        file_handler.setFormatter(formatter)

        # 将控制台处理器添加到日志记录器中
        logger.addHandler(console_handler)
        # 将文件处理器添加到日志记录器中
        logger.addHandler(file_handler)

    # 返回配置好的日志记录器对象
    return logger



def set_log(path=None):
    log_dir_name = path if path is not None else time.strftime("%Y%m%d_%H%M%S")  # 当前时间

    output_path = rf"./runs/{log_dir_name}"  # 创建保存路径
    os.makedirs(output_path, exist_ok=True)  # 创建文件
    log = setup_logger(output_path)  # 创建日志

    return  log, output_path